Dynamic accessing of execution elements through modification of issue rules

ABSTRACT

Embodiments of the invention relate to dynamically routing instructions to execution units based on detected errors in the execution units. An aspect of the invention includes a computer system including a processor having an instruction issue unit and a plurality of execution units. The processor is configured to detect an error in a first execution unit among the plurality of execution units and adjust instruction dispatch rules of the instruction issue unit based on detecting the error in the first execution unit to restrict access to the first execution unit while leaving un-restricted access to the remaining execution units of the plurality of execution units.

DOMESTIC PRIORITY

This application is a continuation of U.S. patent application Ser. No.13/741,985, filed Jan. 15, 2013, the disclosure of which is incorporatedby reference herein in its entirety.

BACKGROUND

The present invention relates generally to routing instructions toexecution units in a processing circuit, and more specifically, todetecting hardware errors in the execution units and modifying issuerules to avoid routing instructions to the execution units havinghardware errors.

In computing, a pipeline may be considered as a set of data processingelements connected in series, so that the output of one element is theinput of the next one. At an issue stage of a pipeline, an instructionissue unit receives an instruction, such as a decoded instruction from adecoding stage, and dispatches the instruction to an execution unit. Theexecution stage of the pipeline may include various execution unitsincluding floating point execution units, fixed point execution units,load/store execution units, and others, according to the designspecifications of the processing circuit.

When a hardware error is detected in the execution stage, such as astuck bit, flipped bit, stalled state, or other hardware error, theexecution stage cannot be relied upon to execute instructions withaccuracy, and the processing circuit may be shut down. For example, theinstructions may be routed to another processor or another processingcore of a multi-core processor. The processor or processing circuitincluding the error may require replacement to return to functionality.

SUMMARY

Exemplary embodiments include a computer system for executinginstructions including a processor including an instruction issue unitand a plurality of execution units. The processor is configured toperform a method including detecting an error in a first execution unitamong the plurality of execution units and adjusting instructiondispatch rules of the instruction issue unit based on detecting theerror in the first execution unit to restrict access to the firstexecution unit while leaving un-restricted access to the remainingexecution units of the plurality of execution units.

Additional exemplary embodiments include a computer-implemented methodfor instruction execution. The method includes detecting, by a computer,an error in a first execution unit among a plurality of execution unitsof a processing circuit and adjusting, by the computer, instructiondispatch rules of an instruction issue unit of the processing circuitbased on detecting the error in the first execution unit to restrictaccess to the first execution unit while leaving un-restricted access tothe remaining execution units of the plurality of execution units.

Further exemplary embodiments include a computer program product forinstruction execution. The computer program product includes a tangiblestorage medium readable by a processing circuit including a plurality ofexecution units and storing instructions for execution by the processingcircuit for performing a method. The method includes detecting by theprocessing circuit an error in a first execution unit among theplurality of execution units and adjusting by the processing circuitinstruction dispatch rules of an instruction issue unit based ondetecting the error in the first execution unit to restrict access tothe first execution unit while leaving un-restricted access to theremaining execution units of the plurality of execution units.

Further exemplary embodiments include a processor including a pluralityof execution units configured to execute instructions, an instructionissue unit configured to receive the instructions and route theinstructions to one of the plurality of execution units based oninstruction dispatch rules, and an error detection unit configured todetect an error in a first execution unit among the plurality ofexecution units and to adjust the instruction dispatch rules of theinstruction issue unit based on the detected error to restrict access tothe first execution unit while leaving un-restricted access to theremaining execution units of the plurality of execution units.

Additional features and advantages are realized through the techniquesof the present invention. Other embodiments and aspects of the inventionare described in detail herein and are considered a part of the claimedinvention. For a better understanding of the invention with theadvantages and the features, refer to the description and to thedrawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The forgoing and other features, and advantages ofthe invention are apparent from the following detailed description takenin conjunction with the accompanying drawings in which:

FIG. 1 illustrates an instruction routing system according to anembodiment of the invention;

FIG. 2 illustrates a processing circuit according to an embodiment ofthe invention;

FIGS. 3A and 3B are a flowchart illustrating a method of dynamicallyrouting instructions according to an embodiment of the invention;

FIG. 4 illustrates a computing system according to an embodiment of theinvention; and

FIG. 5 illustrates a computer-readable medium according to an embodimentof the invention.

DETAILED DESCRIPTION

In exemplary embodiments, an error is detected in an execution stage andisolated to a particular execution unit. Issue rules are then adjustedto route instructions that would have been directed to the executionunit to alternative execution units, or to an execution sub-unit withinthe execution unit that is not affected by the error. Accordingly, evenwhen a hardware error is detected in an execution stage, the executionstage may still be utilized to execute instructions.

FIG. 1 illustrates a block diagram an instruction routing system 100according to one embodiment of the present invention. The instructionrouting system 100 includes an instruction issue unit 110 and anexecution stage 120. The instruction issue unit 110 is configured toreceive instructions, such as decoded instructions, and to route theinstructions to an appropriate execution unit based on the type ofinstruction or operation being performed. In particular, the instructionissue unit 110 includes an instruction dispatch unit 111 and memory 112.The memory 112 may store dispatch rules 113, also referred to asinstruction dispatch rules or issue rules, and the instruction dispatchunit 111 routes instructions to an appropriate execution unit based onthe dispatch rules 113 stored in memory 112. In embodiments of thepresent invention, the memory 112 may include any type of volatile ornon-volatile data storage device, chip, or portion of a chip.

When the instruction issue unit 110 receives an instruction,characteristics of the instruction are determined. For example, a typeof instruction may be determined. Dispatch rules 113 may control theinstruction dispatch unit 111 to route the instruction to an appropriateexecution unit based on the detected instruction characteristic. Forexample, a first type of instruction may be routed to a first executionunit 121 and a second type of instruction may be routed to anotherexecution unit 123.

The execution stage 120 may include a plurality of execution units 121,122 and 123 (also described as functional units 121, 122 and 123). Eachexecution unit 121, 122 and 123 may include, for example, registers,logic, and other circuitry to perform a particular function. Someexamples of types of execution units include fixed point executionunits, floating point execution units, load/store execution units, andvector execution units. However, these execution units are merelyprovided as examples, and it is understood that any number and type ofexecution units may be provided in a processing circuit according to therequirements of the system implementing the processing circuit.

The instruction dispatch unit 111 transmits the instruction to anexecution unit 121, 122, or 123 based on the dispatch rules 113. Thedispatch rules 112 may select execution units for receipt ofinstructions based on the type of instruction, instruction flowprogramming, or any other consideration. In one embodiment, executionunits 121, 122, and 123 are all different types of execution units forexecuting different types of instructions. In another embodiment,execution units 121 and 122 are the same type of execution unit and maybe configured to execute instructions in parallel, as received from theinstruction issue unit 110 or from multiple instruction issue units. Inthe present specification and claims, the term parallel execution unitsrefers to two or more execution units that perform the same function,such as two or more load/store execution units, two or more floatingpoint execution units, etc. Although only two execution units 121 and122 are illustrated in FIG. 1 as being potentially parallel executionunits, it is understood that embodiments of the invention encompass anynumber and any type of parallel execution units.

One or more execution units, such as execution unit 123 may includeexecution sub-units. For example, execution unit 123 is illustrated asincluding execution sub-units 124 and 125. The execution sub-units 124and 125 may be configured to perform different, but related, functions.For example, the execution unit 123 may be an arithmetic execution unit,execution sub-unit 124 may be a multiplication sub-unit, and executionsub-unit 125 may be an addition/subtraction sub-unit. While only oneexecution unit 123 having multiple sub-units 124 and 125 is illustratedin FIG. 1, it is understood that embodiments of the invention encompassany number and any type of execution units having multiple executionsub-units that perform separate, but related, functions.

The error detection unit 130 may detect an error in the execution stage120. In one embodiment, each execution unit 121, 122, and 123 includesan error identification circuit, program, or mechanism. The erroridentification circuit, program, or mechanism may be associatedexclusively with the respective execution unit 121, 122, and 123, suchas by being built in to a circuit defining a respective execution unit121, 122, or 123 or written into a program associated with a respectiveexecution unit 121, 122, or 123. In another embodiment, the errordetection unit 130 is separate from the execution units 121, 122, and123 and monitors all of the execution units 121, 122, and 123 forerrors. In embodiments of the present invention, the errors may behardware errors in the execution units 121, 122 and 123, such as a stuckbit, a flipped bit, a stalled hardware state, or any other hardwareerror. The errors may be detected by bit parity analyses, comparison ofhardware states to known valid states, detection of a stalled state inan execution unit, or by any other hardware error detection method.

The error detection unit 130 includes an error isolation unit 131configured to identify the particular execution unit 121, 122 or 123that is the source of the hardware error, or the execution sub-unit 124or 125 that is the source of the hardware error. In one embodiment, eachexecution unit 121, 122, and 123 includes a separate error detectionmechanism that transmits error information to the error detection unit130. The error isolation unit 131 may determine the source of the errorbased on the received error information.

The error detection unit 130 transmits data including the particularexecution unit 121, 122 or 123, or the particular execution sub-unit 124or 125 to a dispatch rules adjustment unit 114. The dispatch rulesadjustment unit 114 analyzes the data including the particular executionunit or execution sub-unit that is the source of a hardware error,generates one or more replacement dispatch rules or adjusted dispatchrules, and replaces one or more existing dispatch rules in memory 112with the replacement or adjusted dispatch rules.

In particular, the dispatch rules adjustment unit 114 generates one ormore dispatch rules to prevent access of instructions to the executionunit that is the source of the detected error. In addition, when theexecution unit that is the source of the hardware error is one of aplurality of parallel execution units that perform a same function, thedispatch rules adjustment unit 114 generates a replacement dispatch rule113 that prevents access to the execution unit having the hardware errorand re-routes instructions to one or more parallel execution units inwhich no error has been detected. In addition, if the dispatch rulesadjustment unit 114 determines that an error exists in one executionsub-unit 124 but not in another execution sub-unit 125 of an executionunit 123, the dispatch rules adjustment unit 114 may generate areplacement dispatch rule that prevents routing instructions to theexecution sub-unit 124 but continues to allow routing of instructions tothe execution sub-unit 125.

For example, in an embodiment in which four execution units are providedas load/store execution units, dispatch rules may exist to routeinstructions to the respective load/store execution units sequentiallyin a round-robin or looping order. When it is determined that one of thefour load/store execution units is faulty, the dispatch rules adjustmentunit 114 may adjust the dispatch rules to omit the faulty load/storeexecution unit from the loop of load/store execution units eligible toreceive instructions.

While the dispatch rules adjustment unit 114 is illustrated in FIG. 1 asbeing part of the instruction issue unit 110, it is understood that thedispatch rules adjustment unit 114 may be part of the error detectionunit 130 or part of a separate device, circuit, or executable programstored in memory and executed by a processor.

According to embodiments of the present invention, even when one or moreexecution units 121, 122 or 123, or execution sub-units 124 or 125 areinoperable due to hardware errors, one or more additional executions maystill be operated to receive instructions by adjusting dispatch rules113 of instruction issue unit 110. Accordingly, a processing circuit maycontinue operating even after suffering a hardware error.

FIG. 2 illustrates a processing circuit 200 according to embodiments ofthe present disclosure. The processing circuit may correspond, forexample, to an instruction pipeline of a processor, and the processormay include multiple instruction pipelines. For example, the processingcircuit may correspond to a multi-threading processor, a simultaneousmulti-threading processor, a core of a multi-core processor, or anyother type of processor configured to route instructions to particularexecution units based on dispatch rules.

Instructions and data may be stored in memory 201, and the instructioncache 202 may access instructions in memory 201 and store theinstructions for decoding. The memory 201 may include any type ofvolatile or non-volatile memory, such as cache memory. The memory 201and instruction cache 202 can include multiple cache levels. The decodeunit 203 decodes the instructions and transmits the decodedinstructions, portions of instructions, or other decoded data to theissue unit 204. The issue unit 204 analyzes the instructions or otherdata and transmits the decoded instructions, portions of instructions,or other data to a particular execution unit in the execution stage 205based on the analysis. The execution stage 205 transmits the results ofthe executed instruction, portion of instruction, or other decoded datato a destination resource 206.

The destination resource 206 may be any type of resource, includingregisters, cache memory, other memory, I/O circuitry to communicate withother devices, other processing circuits, or any other type ofdestination for executed instructions or data. An error detection unit207 detects hardware errors in the execution stage 205 and controls theissue unit 204 to adjust routing of the instructions based on thedetected errors. In particular, the issue unit 204, execution stage 205,and error detection unit 207 may correspond to the instruction issueunit 110, execution stage 120, and error detection unit 130,respectively, of FIG. 1. Accordingly, the error detection unit 207 maydetect a particular execution unit of execution stage 205 that is thesource of an error and may adjust dispatch rules of the issue unit 204to route instructions away from an execution unit having an error andtoward a parallel execution unit or other execution sub-unit of theexecution unit, as described previously with respect to FIG. 1.

FIGS. 3A and 3B illustrate a method according to one embodiment of thepresent invention. In block 301 an instruction is issued to an executionunit, and in block 302 the instruction is executed. In block 303, it isdetermined whether an error is detected in an execution unit. If noerror is detected, the instructions continue to issue and executewithout adjusting dispatch rules.

On the other hand, if it is determined in block 303 that a hardwareerror exists in an execution unit, the faulty execution unit is isolatedin block 304. In particular, one or more execution units having ahardware error are identified and the remaining execution units areidentified as having no error detected. In addition, it is determinedwhether the error corresponds to only a portion of an execution unit,such as an execution sub-unit.

In block 305, it is determined whether a co-sub-unit is operational. Inother words, if it is determined that the error corresponds to anexecution sub-unit of an execution unit, then it is determined in block305 whether no error is detected in at least one other executionsub-unit of the execution unit. If it is determined in block 305 that atleast one other execution sub-unit of the faulty execution unit has noerror, then the dispatch rules (also referred to as issue rules) aremodified to prevent routing instructions to a faulty execution sub-unitand to allow routing instructions to the execution sub-unit in which noerror is detected. On the other hand, if it is determined in block 305that there is no non-faulty execution sub-unit, then in block 307 theissue rules may be modified to prevent routing instructions to theentire execution unit in which the error is detected.

In block 308, it is determined whether the faulty execution unit is oneof a plurality of parallel execution units, or executions that performthe same function. If so, then in block 309, the issue rules aremodified to route instructions to another one of the parallel executionunits instead of the faulty execution unit.

FIG. 4 illustrates a block diagram of a system 400 for adjustingdispatch rules based on errors detected in an execution stage of aprocessor 405. The methods described herein can be implemented inhardware, software (e.g., firmware), or a combination thereof. In anexemplary embodiment, the methods described herein are implemented inhardware as part of the microprocessor of a special or general-purposedigital computer, such as a personal computer, workstation,minicomputer, or mainframe computer. The system 400 therefore includesgeneral-purpose computer 401 as illustrated in FIG. 4.

In an exemplary embodiment, in terms of hardware architecture, as shownin FIG. 4, the computer 401 includes a processor 405 including aplurality of execution units, an error detection unit, a dispatch rulesadjustment unit, and an instruction dispatch unit. The computer 401further includes memory 410 coupled to a memory controller 415, and oneor more input and/or output (I/O) devices 440, 445 (or peripherals) thatare communicatively coupled via a local input/output controller 435. Theinput/output controller 435 can be, for example but not limited to, oneor more buses or other wired or wireless connections, as is known in theart. The input/output controller 435 may have additional elements, whichare omitted for simplicity, such as controllers, buffers (caches),drivers, repeaters, and receivers, to enable communications. Further,the local interface may include address, control, and/or dataconnections to enable appropriate communications among theaforementioned components.

The processor 405 is a hardware device for executing software,particularly that stored in storage 420, such as cache storage, ormemory 410. The processor 405 can be any custom made or commerciallyavailable processor, a central processing unit (CPU), an auxiliaryprocessor among several processors associated with the computer 401, asemiconductor based microprocessor (in the form of a microchip or chipset), a macroprocessor, or generally any device for executinginstructions.

The memory 410 can include any one or combination of volatile memoryelements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM,etc.)) and nonvolatile memory elements (e.g., ROM, erasable programmableread only memory (EPROM), electronically erasable programmable read onlymemory (EEPROM), programmable read only memory (PROM), tape, compactdisc read only memory (CD-ROM), disk, diskette, cartridge, cassette orthe like, etc.). Moreover, the memory 410 may incorporate electronic,magnetic, optical, and/or other types of storage media. Note that thememory 410 can have a distributed architecture, where various componentsare situated remote from one another, but can be accessed by theprocessor 405.

The instructions in memory 410 may include one or more separateprograms, each of which comprises an ordered listing of executableinstructions for implementing logical functions. In the example of FIG.4, the instructions in the memory 410 a suitable operating system (OS)411. The operating system 411 essentially controls the execution ofother computer programs and provides scheduling, input-output control,file and data management, memory management, and communication controland related services.

In an exemplary embodiment, a conventional keyboard 450 and mouse 455can be coupled to the input/output controller 435. Other output devicessuch as the I/O devices 440, 445 may include input devices, for examplebut not limited to a printer, a scanner, microphone, and the like.Finally, the I/O devices 440, 445 may further include devices thatcommunicate both inputs and outputs, for instance but not limited to, anetwork interface card (NIC) or modulator/demodulator (for accessingother files, devices, systems, or a network), a radio frequency (RF) orother transceiver, a telephonic interface, a bridge, a router, and thelike. The system 400 can further include a display controller 425coupled to a display 430. In an exemplary embodiment, the system 400 canfurther include a network interface 460 for coupling to a network 465.The network 465 can be an IP-based network for communication between thecomputer 401 and any external server, client and the like via abroadband connection. The network 465 transmits and receives databetween the computer 401 and external systems. In an exemplaryembodiment, network 465 can be a managed IP network administered by aservice provider. The network 465 may be implemented in a wirelessfashion, e.g., using wireless protocols and technologies, such as WiFi,WiMax, etc. The network 465 can also be a packet-switched network suchas a local area network, wide area network, metropolitan area network,Internet network, or other similar type of network environment. Thenetwork 465 may be a fixed wireless network, a wireless local areanetwork (LAN), a wireless wide area network (WAN) a personal areanetwork (PAN), a virtual private network (VPN), intranet or othersuitable network system and includes equipment for receiving andtransmitting signals.

If the computer 401 is a PC, workstation, intelligent device or thelike, the instructions in the memory 410 may further include a basicinput output system (BIOS) (omitted for simplicity). The BIOS is a setof essential software routines that initialize and test hardware atstartup, start the OS 411, and support the transfer of data among thehardware devices. The BIOS is stored in ROM so that the BIOS can beexecuted when the computer 401 is activated.

When the computer 401 is in operation, the processor 405 is configuredto execute instructions stored within the memory 410, to communicatedata to and from the memory 410, and to generally control operations ofthe computer 401 pursuant to the instructions.

In an exemplary embodiment, where execution unit error detection anddispatch rules adjustment is implemented in hardware, the dispatch rulesadjustment methods described herein can be implemented with any or acombination of the following technologies, which are each well known inthe art: a discrete logic circuit(s) having logic gates for implementinglogic functions upon data signals, an application specific integratedcircuit (ASIC) having appropriate combinational logic gates, aprogrammable gate array(s) (PGA), a field programmable gate array(FPGA), etc.

As described above, embodiments can be embodied in the form ofcomputer-implemented processes and apparatuses for practicing thoseprocesses. An embodiment may include a computer program product 500 asdepicted in FIG. 5 on a computer readable/usable medium 502 withcomputer program code logic 504 containing instructions embodied intangible media as an article of manufacture. Exemplary articles ofmanufacture for computer readable/usable medium 502 may include floppydiskettes, CD-ROMs, hard drives, universal serial bus (USB) flashdrives, or any other computer-readable storage medium, wherein, when thecomputer program code logic 504 is loaded into and executed by acomputer, the computer becomes an apparatus for practicing theinvention. Embodiments include computer program code logic 504, forexample, whether stored in a storage medium, loaded into and/or executedby a computer, or transmitted over some transmission medium, such asover electrical wiring or cabling, through fiber optics, or viaelectromagnetic radiation, wherein, when the computer program code logic504 is loaded into and executed by a computer, the computer becomes anapparatus for practicing the invention. When implemented on ageneral-purpose microprocessor, the computer program code logic 504segments configure the microprocessor to create specific logic circuits.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of onemore other features, integers, steps, operations, element components,and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

While the preferred embodiment to the invention had been described, itwill be understood that those skilled in the art, both now and in thefuture, may make various improvements and enhancements which fall withinthe scope of the claims which follow. These claims should be construedto maintain the proper protection for the invention first described.

What is claimed is:
 1. A computer-implemented method for instructionexecution, the method comprising: detecting, by an error detection unitincluded in a computer, an error in a first execution unit among aplurality of execution units of a processing circuit, wherein the firstexecution unit includes at least a first execution sub-unit and a secondexecution sub-unit, and the error detection unit installed remotely fromthe plurality of execution units; receiving instructions that areexecutable by at least one execution unit among the plurality ofexecution units; identifying at least one characteristic of theinstructions, matching the at least one characteristic to an executionunit capable of executing a given instruction, and dispatching the giveninstruction to a corresponding execution unit based on an instructiondispatch rule that controls routing of the given instruction; inresponse to determining the corresponding execution unit is the firstexecution unit including the error, adjusting, by the computer, at leastone of the instruction dispatch rules of an instruction issue unit basedon detecting the error in the first execution unit to generate areplacement dispatch rule, the replacement dispatch rule re-routing thegiven instruction so as to restrict access to the first execution unitwhile leaving un-restricted access to the remaining execution units ofthe plurality of execution units; determining that the error isassociated with the first execution sub-unit and the error is notassociated with the second execution sub-unit; and adjusting theinstruction dispatch rules of the instruction issue unit to preventrouting of instructions to the first execution sub-unit and to allowrouting of instructions to the second execution sub-unit.
 2. Thecomputer-implemented method of claim 1, further comprising: determiningwhether the first execution unit is one of a plurality of parallelexecution units for performing a same type of instruction execution; andadjusting the instruction dispatch rules of the instruction issue unitto prevent routing of instructions to the first execution unit in whichthe error is detected and to route instructions to another one of theplurality of parallel execution units in which no error is detected. 3.The computer-implemented method of claim 1, wherein the computerincludes an error detection unit configured to detect the error and toisolate the first execution unit in which the error is detected fromamong the plurality of execution units.
 4. The computer-implementedmethod of claim 1, wherein the error is a hardware error in the firstexecution unit.
 5. A computer program product for instruction execution,the computer program product comprising: a tangible storage mediumreadable by a processing circuit including a plurality of executionunits and storing instructions for execution by the processing circuitfor performing a method comprising: detecting, by an error detectionunit included with the processing circuit, an error in a first executionunit among the plurality of execution units, wherein the first executionunit includes at least a first execution sub-unit and a second executionsub-unit, and the error detection unit installed remotely from theplurality of execution units; receiving instructions that are executableby at least one execution unit among the plurality of execution units;identifying at least one characteristic of the instructions, matchingthe at least one characteristic to an execution unit capable ofexecuting a given instruction, and dispatching the given instruction toa corresponding execution unit based on an instruction dispatch rulethat controls routing of the given instruction; in response todetermining the corresponding execution unit is the first execution unitincluding the error, adjusting, by the processing circuit, at least oneof the instruction dispatch rules of an instruction issue unit based ondetecting the error in the first execution unit to generate areplacement dispatch rule, the replacement dispatch rule re-routing thegiven instruction so as to restrict access to the first execution unitwhile leaving un-restricted access to the remaining execution units ofthe plurality of execution units; determining that the error isassociated with the first execution sub-unit and the error is notassociated with the second execution sub-unit; and adjusting theinstruction dispatch rules of the instruction issue unit to preventrouting of instructions to the first execution sub-unit and to allowrouting of instructions to the second execution sub-unit.
 6. Thecomputer program product of claim 5, wherein the method furthercomprises: determining whether the first execution unit is one of aplurality of parallel execution units for performing a same type ofinstruction execution; and adjusting the instruction dispatch rules ofthe instruction issue unit to prevent routing of instructions to thefirst execution unit in which the error is detected and to routeinstructions to another one of the plurality of parallel execution unitsin which no error is detected.
 7. The computer program product of claim5, wherein the processing circuit includes an error detection unitconfigured to detect the error and to isolate the first execution unitin which the error is detected.
 8. The computer program product of claim5, wherein the error is a hardware error in the first execution unit.